#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
企业舆情分析系统 - 快速启动工具
使用统一API管理器
"""

import asyncio
import os
from datetime import datetime
from unified_api_config import get_api_manager, print_api_status


def print_welcome():
    """打印欢迎信息"""
    print("=" * 80)
    print("🚀 企业舆情分析系统 - 快速启动")
    print("=" * 80)
    print("📅 启动时间:", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    print("🎯 本工具将帮助您快速开始使用企业舆情分析系统")


def check_system_requirements():
    """检查系统要求"""
    print("\n📋 检查系统要求...")
    
    # 检查必要文件
    required_files = [
        "config.json",
        "database_init.py", 
        "question_generator.py",
        "multi_ai_chat.py",
        "enterprise_analysis_system.py"
    ]
    
    missing_files = []
    for file in required_files:
        if os.path.exists(file):
            print(f"   ✅ {file}")
        else:
            print(f"   ❌ {file}")
            missing_files.append(file)
    
    if missing_files:
        print(f"\n⚠️ 缺少必要文件: {', '.join(missing_files)}")
        return False
    
    print("\n✅ 系统文件检查通过")
    return True


def check_api_configuration():
    """检查API配置"""
    print("\n🔑 检查API配置...")
    
    # 使用统一API管理器
    api_manager = get_api_manager()
    valid_apis = api_manager.get_all_valid_apis()
    
    if not valid_apis:
        print("❌ 未配置任何有效的API服务")
        print("\n📝 请编辑 config.json 文件，配置至少一个AI服务的API密钥:")
        print("   • 阿里通义千问 (aliyun_qwen)")
        print("   • DeepSeek (deepseek)")
        print("   • 智谱GLM (zhipu_glm)")
        print("   • 百度文心一言 (baidu_ernie)")
        print("   • Kimi Chat (kimi)")
        return False
    
    # 显示API状态
    api_manager.print_api_status()
    
    # 检查DeepSeek配置（推荐）
    deepseek_key = api_manager.get_deepseek_api_key()
    if deepseek_key:
        print("\n✅ 推荐配置DeepSeek已设置（用于问题生成和威胁分析）")
    else:
        print("\n⚠️ 建议配置DeepSeek API以获得最佳体验（成本低，功能全）")
    
    return True


def initialize_database():
    """初始化数据库"""
    print("\n📊 初始化数据库...")
    
    try:
        from database_init import DatabaseInitializer
        
        db_init = DatabaseInitializer()
        if not os.path.exists("enterprise_analysis.db"):
            print("   📁 数据库不存在，正在创建...")
            db_init.init_all_tables()
            print("   ✅ 数据库创建完成")
        else:
            print("   📁 数据库已存在")
            
        print("   ✅ 数据库初始化完成")
        return True
        
    except Exception as e:
        print(f"   ❌ 数据库初始化失败: {e}")
        return False


async def run_sample_analysis():
    """运行示例分析"""
    print("\n🎯 运行示例分析...")
    
    try:
        # 使用统一API管理器
        api_manager = get_api_manager()
        
        # 获取配置
        multi_ai_config = api_manager.get_multi_ai_config()
        deepseek_key = api_manager.get_deepseek_api_key()
        
        if not multi_ai_config:
            print("   ❌ 没有可用的AI服务，无法运行示例分析")
            return False
        
        print(f"   🤖 使用AI服务: {list(multi_ai_config.keys())}")
        
        # 初始化企业分析系统
        from enterprise_analysis_system import EnterpriseAnalysisSystem
        from question_generator import QuestionType
        
        analysis_system = EnterpriseAnalysisSystem(
            config=multi_ai_config,
            deepseek_api_key=deepseek_key
        )
        
        # 运行示例分析
        print("   🏢 分析企业: 腾讯")
        print("   📝 生成问题中...")
        
        session_id = await analysis_system.analyze_enterprise(
            enterprise_name="腾讯",
            question_types=[
                QuestionType.NEGATIVE_NEWS,
                QuestionType.FINANCIAL_INFO,
                QuestionType.COMPETITIVE_ANALYSIS
            ],
            use_inspiration=bool(deepseek_key),
            max_questions_per_type=2,
            min_total_questions=5
        )
        
        print(f"   ✅ 分析完成，会话ID: {session_id}")
        
        # 获取结果摘要
        summary = analysis_system.get_analysis_summary(session_id)
        print(f"   📊 生成问题: {summary['total_questions']} 个")
        
        # 计算成功响应数
        successful_responses = 0
        total_responses = 0
        for question in summary.get('questions', []):
            for response in question.get('responses', []):
                total_responses += 1
                if response.get('success'):
                    successful_responses += 1
        
        print(f"   🎯 成功响应: {successful_responses}/{total_responses}")
        
        return True
        
    except Exception as e:
        print(f"   ❌ 示例分析失败: {e}")
        return False


def show_next_steps():
    """显示后续步骤"""
    print("\n📖 后续步骤建议:")
    print("=" * 50)
    
    print("1. 🎯 运行完整测试:")
    print("   python full_workflow_test.py")
    
    print("\n2. 📝 测试问题生成:")
    print("   python test_question_generation.py")
    
    print("\n3. 🔍 分析特定企业:")
    print("   # 编辑 enterprise_analysis_system.py 中的示例代码")
    print("   # 或使用交互式分析工具")
    
    print("\n4. 📊 查看分析结果:")
    print("   # 检查 enterprise_analysis.db 数据库")
    print("   # 或使用数据导出工具")
    
    print("\n5. ⚙️ 高级配置:")
    print("   # 编辑 config.json 配置更多AI服务")
    print("   # 调整分析参数和问题类型")


async def main():
    """主函数"""
    print_welcome()
    
    # 检查系统要求
    if not check_system_requirements():
        print("\n❌ 系统要求检查失败，请安装必要文件后重试")
        return
    
    # 检查API配置
    if not check_api_configuration():
        print("\n❌ API配置检查失败，请配置API密钥后重试")
        return
    
    # 初始化数据库
    if not initialize_database():
        print("\n❌ 数据库初始化失败")
        return
    
    # 询问是否运行示例分析
    print("\n" + "=" * 50)
    choice = input("🤔 是否运行示例分析？(Y/n): ").lower()
    
    if choice not in ['n', 'no']:
        success = await run_sample_analysis()
        if success:
            print("\n🎉 示例分析完成！系统已准备就绪")
        else:
            print("\n⚠️ 示例分析失败，但系统基本功能正常")
    else:
        print("\n✅ 跳过示例分析，系统已准备就绪")
    
    # 显示后续步骤
    show_next_steps()
    
    print("\n" + "=" * 80)
    print("🎉 快速启动完成！欢迎使用企业舆情分析系统")
    print("=" * 80)


if __name__ == "__main__":
    asyncio.run(main()) 